import { inject } from 'vue'
import { DesignerConfig, FormConfig, FormDesigner } from '@/types/form'

/**
 * 使用设计者钩子
 *
 * 本钩子用于在组件中获取设计者实例它通过依赖注入的方式获取设计者实例，
 * 这允许在不同的上下文中灵活地使用不同的设计者实例
 *
 * @returns 返回设计者实例
 */
export function useDesigner(): FormDesigner {
  const getDesigner = inject<Function>('getDesigner')
  if (!getDesigner) {
    throw new Error('useDesigner 必须在作为 FormDesigner 的子组件中使用')
  }
  return getDesigner()
}

export function useDesignerConfig(): DesignerConfig {
  console.log('useDesignerConfig')
  const getDesignerConfig = inject<Function>('getDesignerConfig')
  return getDesignerConfig()
}

export function useFormConfig(): FormConfig {
  return useDesigner().formConfig
}

